package com.apci.ipreda.client.web.validator;

import org.springframework.util.CollectionUtils;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.apci.ipreda.client.web.form.DeclaracionForm;
import com.apci.ipreda.domain.Declaracion;
import com.apci.ipreda.service.DeclaracionService;
import com.apci.ipreda.util.CommonUtil;


public class DeclaracionEditValidator implements Validator{
	
	private DeclaracionService declaracionService;
	
	
	
	
	public boolean supports(Class paramClass) {
		return DeclaracionForm.class.isAssignableFrom(paramClass);
	}

	
	public void validate(Object paramObject, Errors paramErrors) {
		// TODO Auto-generated method stub
		System.out.println("--------------------validate-------------------");
	}
	public void finalizarDeclaracionValidate(DeclaracionForm declaracionForm, Errors errors) {
		

		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "declaracion.entidad.denominacion", "error.declaracion.entidad.denominacion.empty","IDENTIFICACION DE IPREDA: Debe ingresar Denominacion");
		if(errors.hasErrors())return;
		/*
		if(!CommonUtil.validaPattern(CommonUtil.PATTERN_LETRAS, declaracionForm.getDeclaracion().getEntidad().getDenominacion())){
			errors.rejectValue("declaracion.entidad.denominacion", "error.declaracion.entidad.denominacion.valid", "IDENTIFICACION DE IPREDA: La denominacion tiene caracteres no validos");
			return;
		}
		*/	
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "entidadDireccion.domicilio", "error.entidadDireccion.domicilio.empty","IDENTIFICACION DE IPREDA: Debe ingresar Domicilio Legal");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "entidadDireccion.departamento.codigo", "error.entidadDireccion.departamento.codigo.empty","IDENTIFICACION DE IPREDA: Debe Seleccionar Departamento");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "entidadDireccion.provincia.codigo", "error.entidadDireccion.provincia.codigo.empty","IDENTIFICACION DE IPREDA: Debe Seleccionar Provincia");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "entidadDireccion.distrito.codigo", "error.entidadDireccion.distrito.codigo.empty","IDENTIFICACION DE IPREDA: Debe Seleccionar Distrito");
		if(errors.hasErrors())return;
		
		//ValidationUtils.rejectIfEmptyOrWhitespace(errors, "entidadDireccion.email", "error.entidadDireccion.email.empty","IDENTIFICACION DE IPREDA: Debe ingresar Email");
		//if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "entidadDireccion.pais.codigo", "error.entidadDireccion.pais.codigo.empty","IDENTIFICACION DE IPREDA: Debe Seleccionar Pais de origen");
		if(errors.hasErrors())return;
		
		Declaracion declaracion = declaracionService.getDeclaracionById(declaracionForm.getDeclaracion().getId());
		if(CollectionUtils.isEmpty(declaracion.getEntidad().getEmpleadoList())){
			errors.rejectValue("empleado.id", "error.empleado.size", "IDENTIFICACION DE IPREDA: Debe registrar Representante");
			return;
		}
		if("S".equals(declaracion.getRecibioMercancia())){
			if(CollectionUtils.isEmpty(declaracion.getDonacionList())){
				errors.rejectValue("donacion.id", "error.donacion.size", "INFORMACION DE MERCANCIAS DONADAS: Debe registrar Donacion");
				return;
			}
			if(CollectionUtils.isEmpty(declaracion.getActividadList())){
				errors.rejectValue("actividad.id", "error.actividad.size", "ACTIVIDADES: Debe Registrar Actividad");
				return;
			}
		}
	}
	public void agregarEmpleadoValidate(DeclaracionForm paramObject, Errors errors) {
		
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.nombre", "error.empleado.nombre.empty","REPRESENTANTE LEGAL: Debe ingresar nombres y apellidos");
		if(errors.hasErrors())return;
			
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.cargoEmpleado.codigo", "error.empleado.cargoEmpleado.codigo.empty","REPRESENTANTE LEGAL: Debe ingresar cargo de empleado");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.tipoDocumentoIdentidad.codigo", "error.empleado.tipoDocumentoIdentidad.codigo.empty","REPRESENTANTE LEGAL: Debe Seleccionar tipo de documento de identidad");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.numeroDocumento", "error.empleado.numeroDocumento.empty","REPRESENTANTE LEGAL: Debe ingresar numero de documento");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.email", "error.empleado.email.empty","REPRESENTANTE LEGAL: Debe ingresar email");
		if(errors.hasErrors())return;
		
	}
	public void agregarDonacionValidate(DeclaracionForm paramObject, Errors errors) {
		
		
		
		/*ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.nombre", "error.empleado.nombre.empty","REPRESENTANTE LEGAL: Debe ingresar nombres y apellidos");
		
		
		if(errors.hasErrors())return;
			
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.cargoEmpleado.codigo", "error.empleado.cargoEmpleado.codigo.empty","REPRESENTANTE LEGAL: Debe ingresar cargo de empleado");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.tipoDocumentoIdentidad.codigo", "error.empleado.tipoDocumentoIdentidad.codigo.empty","REPRESENTANTE LEGAL: Debe Seleccionar tipo de documento de identidad");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.numeroDocumento", "error.empleado.numeroDocumento.empty","REPRESENTANTE LEGAL: Debe ingresar numero de documento");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.email", "error.empleado.email.empty","REPRESENTANTE LEGAL: Debe ingresar email");
		if(errors.hasErrors())return;*/
		
	}
	public void agregarActividadValidate(DeclaracionForm paramObject, Errors errors) {
		
		
		/*ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.nombre", "error.empleado.nombre.empty","REPRESENTANTE LEGAL: Debe ingresar nombres y apellidos");
		if(errors.hasErrors())return;
			
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.cargoEmpleado.codigo", "error.empleado.cargoEmpleado.codigo.empty","REPRESENTANTE LEGAL: Debe ingresar cargo de empleado");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.tipoDocumentoIdentidad.codigo", "error.empleado.tipoDocumentoIdentidad.codigo.empty","REPRESENTANTE LEGAL: Debe Seleccionar tipo de documento de identidad");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.numeroDocumento", "error.empleado.numeroDocumento.empty","REPRESENTANTE LEGAL: Debe ingresar numero de documento");
		if(errors.hasErrors())return;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empleado.email", "error.empleado.email.empty","REPRESENTANTE LEGAL: Debe ingresar email");
		if(errors.hasErrors())return;*/
		
	}

	public void setDeclaracionService(DeclaracionService declaracionService) {
		this.declaracionService = declaracionService;
	}


}
